import matplotlib.pyplot as plt
import numpy as np

# 中文显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei','DV Sans']
plt.rcParams['axes.unicode_minus'] = False

# 演示局部保号性
x = np.linspace(-2, 2, 1000)
f = lambda x: x**2 + 0.5  # 始终大于0的函数

x0, delta = 0.5, 0.8
plt.figure(figsize=(10, 6))
plt.plot(x, f(x), 'b-', linewidth=2, label='f(x) = x² + 0.5')

# 标记邻域范围
plt.axvline(x=x0-delta, color='orange', linestyle=':', alpha=0.7)
plt.axvline(x=x0+delta, color='orange', linestyle=':', alpha=0.7)
plt.fill_between(x, 0, f(x), where=(x >= x0-delta) & (x <= x0+delta), 
                alpha=0.2, color='green', label='保号区间')

plt.title('局部保号性演示：f(x_o)>0 在x_o邻域内f(x)>0')
plt.xlabel('x'); plt.ylabel('f(x)')
plt.legend(); plt.grid(True, alpha=0.3)
plt.show()